package homework.xuluoxi;

/*
 * 作业名称：二维数组
 * 作业功能：二位数组的运用
 * 学    员：徐罗希
 * 版    本：V1.0
 * 备    注：模块二作业
 */

// 为简化代码，代码均在一个类中，且所有方法均为public
public class Array {
    // 定义int类型的二维数组
    int[][] arr = new int[16][16];

    // 根据题目要求，又因数组元素较多，所以采用程序自动的方式指定数组内全部元素
    // 双重for循环，初始化该二维数组
    public void initArr() {
        // 定义局部变量用于赋值数组中的元素
        int num = 0;
        for (int i = 0; i <= arr.length - 1; i ++) {
            for (int j = 0; j <= arr[i].length - 1; j ++) {
                arr[i][j] = num;
                num ++;
            }
        }
    }
    // 定义打印数组中所有元素的方法
    public void show() {
        System.out.println("此二位数组为：");
        for (int i = 0; i <= arr.length - 1; i ++) {
            for (int j = 0; j <= arr[i].length - 1; j ++) {
                // if语句为打印数组美观所用
                if (arr[i][j] < 10) {
                    System.out.print(arr[i][j] + "   ");
                }
                else if (arr[i][j] < 100) {
                    System.out.print(arr[i][j] + "  ");
                }
                else{
                    System.out.print(arr[i][j] + " ");
                }
            }
            System.out.println();
        }
        System.out.println("----------------------------------");
    }
    // 每一行中元素累加和
    public void rowSum() {
        // 定义变量记录元素累加和
        int sum = 0;
        for (int i = 0; i <= arr.length - 1; i ++) {
            for (int j = 0; j <= arr[i].length - 1; j ++) {
                sum += arr[i][j];
            }
            System.out.println("第" + (i + 1) + "行的元素和为：" + sum);
            sum = 0;
        }
        System.out.println("----------------------------------");
    }
    // 每一列中元素累加和
    public void colSum() {
        // 定义变量记录元素累加和
        int sum = 0;
        int i = 0;
        for (int j = 0; j <= arr[i].length - 1; j ++) {
            for (; i <= arr.length - 1; i ++) {
                sum += arr[i][j];
            }
            System.out.println("第" + (j + 1) + "列的元素和为：" + sum);
            sum = 0;
            i = 0;
        }
        System.out.println("----------------------------------");
    }
    // 左上角到右下角元素累加和
    public void diaSum1() {
        // 定义变量记录元素累加和
        int sum = 0;
        for (int i = 0; i <= arr.length - 1; i ++) {
            for (int j = 0; j <= arr[i].length - 1; j ++) {
                if (i == j) {
                    sum += arr[i][j];
                    break;
                }
            }
        }
        System.out.println("左上角到右下角元素累加和为：" + sum);
        System.out.println("----------------------------------");
    }
    // 右上角到左下角元素累加和
    public void diaSum2() {
        // 定义变量记录元素累加和
        int sum = 0;
        for (int i = 0; i <= arr.length - 1; i ++) {
            for (int j = 0; j <= arr[i].length - 1; j ++) {
                if ( 15 == i + j){
                    sum += arr[i][j];
                    break;
                }
            }
        }
        System.out.println("右上角到左下角元素累加和为：" + sum);
        System.out.println("----------------------------------");
    }

    public static void main(String[] args) {
        Array myArr = new Array();
        myArr.initArr();
        myArr.show();
        myArr.rowSum();
        myArr.colSum();
        myArr.diaSum1();
        myArr.diaSum2();
    }
}
